/**
 * ajax请求配置
 */
import axios from "axios";
import { ElNotification} from "element-plus";
import router from "@/router";
import {getToken} from "@/util/TokenUtil";

// axios默认配置
axios.defaults.timeout = 10000; // 超时时间
// axios.defaults.baseURL 请求地址前缀
// 微服务地址
axios.defaults.baseURL = "/api";
//如果前端使用代理，baseURL修改为代理地址 如：'/api'
//允许携带cookie
axios.defaults.withCredentials = true;
// 整理数据
axios.defaults.transformRequest = function (data: any) {
    data = JSON.stringify(data);
    return data;
};

// 路由请求拦截
axios.interceptors.request.use(
    (config) => {
        config.headers["Content-Type"] = "application/json;charset=UTF-8";
        config.headers["token"] = getToken();
        return config;
    },
    (error) => {
        return Promise.reject(error.response);
    }
);

// 路由响应拦截
axios.interceptors.response.use(
    (response) => {
        if (!response.data.sign) {
            if (response.data.code === 10003) {
                router.push("/login");
            }
            ElNotification.error(response.data.message);
            return Promise.reject(response.data.message);
        } else {
            return response;
        }
    },
    (error) => {
        if (error && error.data && error.data.message) {
            // 返回接口返回的错误信息
            return Promise.reject(error.data.message);
        } else {
            return Promise.reject("请求错误");
        }
    }
);

export default axios;
